package com.example.springmvcdemo;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.apache.catalina.Session;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//接收Session
//接收Session的前提是要有一个Session
//Session 比较特殊,因为保存的session是在内存上,所以一关闭服务器,所有信息就会消失,所以在使用session的时候是不能关闭服务器的
@RequestMapping("/Session")
@RestController
public class SessionReq {
    //设置 Session
    @RequestMapping("/setSession")
    public String setSession(HttpServletRequest session){
        HttpSession session1 = session.getSession(true);
        //这里的true表示: 如果内存里面有session,则返回该session; 如果没有session,就创造一个空session
        //为 false 表示: 如果没有session信息,则返回null
        //同时,这里也可以什么都不填,则和填 true 是一样的
        if(session1!=null){
            //表示session为空,则为session添加信息
            session1.setAttribute("name","lisi");
            session1.setAttribute("value",234);
        }
        return "设置Session成功";
    }

    //获取Session
    @RequestMapping("/getSession")
    public String getSession(HttpServletRequest session){
        HttpSession session1 = session.getSession(false);
        //但是直接返回null可能会构成空指针
        if(session1!=null){
            System.out.println(session1.getAttribute("name"));
            System.out.println(session1.getAttribute("value"));
        }
        return "接收成功";
    }

    @RequestMapping("/getSession2")
    public String getSession2(HttpSession session){
        System.out.println(session.getAttribute("name"));
        System.out.println(session.getAttribute("value"));
        return "接收成功";
    }
}
